package com.lenin.omena.client;

import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.FocusPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.lenin.omena.client.event.LoginEvent;
import com.lenin.omena.client.event.LoginEventHandler;
import com.lenin.omena.client.event.SaveUserEvent;
import com.lenin.omena.client.event.SaveUserEventHandler;
import com.lenin.omena.shared.LoginResult;
import com.lenin.omena.shared.SaveUserResult;
import com.lenin.omena.shared.domain.User;


public class HelpPanel extends Composite {

	public static final Widget HELP_WELCOME = new HTML(
			"Tervetuloa Omenapörssiin!<br/><br/>" +
			"Omenapörssi on palvelu, jossa voit tarjota ylimääräisiä omenoita <br />" +
			"tai muita puutarhatuotteitasi muille palvelun käyttäjille. <br /><br />" +
			"Voit tarjota tuotteitasi ilmaiseksi tai asettaa niille hinnan, <br />" +
			"palvelun käyttö on joka tapauksessa maksutonta!<br /><br />" +
			"Jos haluat asettaa tuotteita tarjolle, aloita rekisteröitymällä. <br />" +
			"Jos olet kiinnostunut lähialueesi tarjonnasta, klikkaa kartalla näkyviä <br />" +
			"kuvakkeita nähdäksesi sijaintien tarjonnan ja tarjoajien yhteystiedot."
	);
	
	public static final Widget HELP_MAP_GENERAL = new HTML(
			"Klikkaamalla kartalla olevia kuvakkeita näet paikkojen hedelmätarjonnan<br/>" +
			"ja tarjoajien yhteystiedot." +
			"<br /><br />"
	);
	
	public static final Widget HELP_MAP_NOT_LOGGED_IN = new HTML(
			"Tervetuloa Omenapörssiin!<br/><br/>" +
			"Omenapörssi on palvelu, jossa voit tarjota ylimääräisiä omenoita <br />" +
			"tai muita puutarhatuotteitasi muille palvelun käyttäjille. <br /><br />" +
			"Voit tarjota tuotteitasi ilmaiseksi tai asettaa niille hinnan, <br />" +
			"palvelun käyttö on joka tapauksessa maksutonta!<br /><br />" +
			"Jos haluat asettaa tuotteita tarjolle, aloita rekisteröitymällä. <br />" +
			"Jos olet kiinnostunut lähialueesi tarjonnasta, klikkaa kartalla näkyviä <br />" +
			"kuvakkeita nähdäksesi sijaintien tarjonnan ja tarjoajien yhteystiedot."
	);
	
	public static final Widget HELP_MAP_LOGGED_IN = new HTML(
			"Vasemmassa yläkulmassa olevasta \"Profiili\" -napista pääset Profiili-valikkoon,<br/>" +
			"josta voit hallita tuotetarjontaasi, muuttaa yhteystietojasi tai poistaa<br/>" +
			"profiilisi palvelusta kokonaan.<br/><br/>" +
			"Jos olet kiinnostunut lähialueesi tarjonnasta, klikkaa kartalla näkyviä <br />" +
			"kuvakkeita nähdäksesi sijaintien tarjonnan ja tarjoajien yhteystiedot."
	);
	
	public static final Widget HELP_DIALOG_NOT_LOGGED_IN = new HTML(
			"<b>Kirjaudu sisään</b><br/><br/>" +
	        "Anna käyttäjätunnuksesi ja salasanasi ja paina \"Kirjaudu sisään\", " +
	        "jos olet jo rekisteröitynyt palveluun.<br/><br/><br/>" +
	        "<b>Rekisteröidy</b><br/><br/>" +
	        "Jos haluat asettaa hedelmiä tarjolle, valitse tämä välilehti,<br/>" +
	        "täytä rekisteröitymislomake ja aktivoi tunnuksesi sähköpostiisi tulevalla linkillä."
	);
	
	public static final Widget HELP_DIALOG_LOGGED_IN = new HTML(
			"<b>Aseta tarjolle</b><br/><br/>" +
        	"Anna tuotteen nimi, määrä ja mahdollinen hinta ja paina \"Lisää\",<br/>" +
        	"lisätäksesi uuden tuotteen tarjontaasi.<br/>" +
        	"Kun tuotteen määrä vähenee tai haluat muuttaa hintaa,<br/>" +
        	"täytä muutetut tiedot ja paina \"Tallenna\" muutetun tuotteen kohdalla.<br/><br/><br/>" +
        	"<b>Käyttäjätiedot</b><br/><br/>" +
        	"Voit muuttaa käyttäjätietosi ja tallentaa muutokset tai poistaa<br/>" +
        	"profiilisi kokonaan. Poistettuasi profiilisi, menetät kaikki tietosi."
	);
	
	public static Widget HELP_MAP = HELP_MAP_NOT_LOGGED_IN;
	
	public static Widget HELP_DIALOG = HELP_DIALOG_NOT_LOGGED_IN;
	
	
	interface MyUiBinder extends UiBinder<Widget, HelpPanel> {
	}
	
	private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
	
	public enum State {
		CLOSED, OPEN;
	}
	
	
	@UiField
	FocusPanel helpPanel;
	
	@UiField
	HTMLPanel messagePanel;
	
	private int width = 500;
	private int height = 50;
	private int top;
	private int left;
	
	private State state = State.OPEN;
	
	
	private Widget contentWidget;
	
	public HelpPanel() {

		initWidget(uiBinder.createAndBindUi(this));
		
		setWidth(width+"px");
		setHeight(height);
		
		
	}
	
	
	public void setWidth(int width) {
		
		this.width = width;

		setWidth(width+"px");
		
	}
	
	
	public int getWidth() {
		return width+40;
	}

	
	public void setHeight(int height) {
		
		this.height = height;
		
		setHeight(height+"px");
		helpPanel.setHeight(height+20+"px");
		
	}
	
	
	public int getHeight() {
		return height+20;
	}
	
	
	public void setTop(int top) {
		
		this.top = top;
		
		getElement().getStyle().setTop(top-20, Unit.PX);
		
	}
	
	
	public void setLeft(int left) {
			
		this.left = left;
		
		getElement().getStyle().setLeft(left, Unit.PX);
		
	}

	
	public void setState(State state) {
		this.state = state;
	}
	
	public State getState() {
		return state;
	}
	
	
	public void addClickHandler(ClickHandler handler) {
		helpPanel.addClickHandler(handler);
	}
	
	
	public void setContent(Widget widget) {

		if(contentWidget != null) {
			messagePanel.remove(contentWidget);
		}
		
		if(widget == null) {
			widget = new HTML("");
		}
		
		messagePanel.add(widget);
		contentWidget = widget;
		
	}
	
 
}
